//数据请求层
//封装请求数据方法
//数据请求整合

import {
  getDayData,
  getMonthData,
  getYearData
} from './request';
import {
  formatChineseDate,
  mapForChineseDate
} from '../libs/utils';

//传入store数据目的是将后端请求到的数据存储到store里
export default async (store, field, date) => {
  let data = null;

  switch (field) {
    case 'day':
      data = await getDayData(date);

      /**
       * console.log('getDayData back!', data);
       * {
       *   error_code: 10001,
       *   reason: "错误的请求KEY",
       *   result: null,
       *   resultcode: "101"
       * }
       * 
       * result.data(success):
       * {
       *   animalsYear: "牛",
       *   avoid: "安床.安葬.破土.纳畜.伐木.造床.行丧.开仓",
       *   date: "2021年11月30日",
       *   desc: "",
       *   holiday: "",
       *   lunar: "十月廿六",
       *   lunarYear: "辛丑年",
       *   suit: "搬家.装修.结婚.入宅.领证.动土.出行.订婚.上梁.旅游.求嗣.修坟.赴任.."",
       *   weekday: "星期二",
       *   year-month: "2021年11月undefined日"
       * }
       */
      break;
    case 'month':
      data = await getMonthData(date);
      /**
       * result.data:
       * [
       *   {
       *     desc: "10月1日至7日放假调休，共7天。9月26日（星期日）、10月9日（星期六）..",
       *     festival: "2021年10月1日",
       *     list: (9) [
       *       {date: '2021-10-1', status: '1'},
       *       {date: '2021-10-2', status: '1'},
       *       ...
       *     ],
       *     list#num#: 9,
       *     list_num: 9,
       *     name: "国庆节",
       *     rest: "10月8日至10月9日请假2天，与周末连休可拼10天长假。"
       *   }
       * ]
       */
      break;
    case 'year':
      data = await getYearData(date);
      /**
       * console.log(data);
       * {
       *   error_code: 0,
       *   reason: "Success",
       *   result: {
       *     data: {
       *       holiday_list: (8) [
       *         {name: '元旦', startday: '2021年1月1日'},
       *         {name: '除夕', startday: '2021年2月11日'},
       *         ...
       *       ],
       *       holidaylist: "[{\"name\":\"元旦\",\"startday\":\"2021-1-1\"},{\"n..."",
       *       year: "2021"
       *     }
       *   }
       * }
       */
      break;
    default:
      break;
  }

  //证明不成功
  if (data.error_code !== 0) {
    store.commit('setErrorCode', data.error_code);
    return;
  }

  let res = null;

  //整理data数据
  //2020-7-9 -> 2020年7月9日
  switch (field) {
    case 'day':
      res = data.result.data;

      /**
       * // console.log(data.result.data);
       * {
       *   amimalsYear: '鼠',
       *   avoid: '祈福,动土,破土',
       *   date: '2020-7-29',
       *   lunar: '六月初九',
       *   lunarYear: '庚子年',
       *   suit: '出嫁,出行,开市,安床',
       *   weekday: '星期三',
       *   year-month: '2020-7'
       * }
       */

      //formatChineseDate(date, type)
      res.date = formatChineseDate(res.date, 'day');
      res['year-month'] = formatChineseDate(res['year-month'], 'month');
      break;

    case 'month':
      res = data.result.data.holiday_array;
      /**
       * month data:
       * [
       *   {
       *     desc: "10月1日至7日放假调休，共7天。9月26日（星期日）、10月9日（星期六）..",
       *     festival: "2021年10月1日",
       *     list: (9) [
       *       {date: '2021-10-1', status: '1'},
       *       {date: '2021-10-2', status: '1'},
       *       ...
       *     ],
       *     list#num#: 9,
       *     list_num: 9,
       *     name: "国庆节",
       *     rest: "10月8日至10月9日请假2天，与周末连休可拼10天长假。"
       *   }
       * ]
       */

      //mapForChineseDate(data, key)
      res = mapForChineseDate(res, 'festival');
      break;

    case 'year':
      /**
       * year data:
       * {
       *   holidaylist: [
       *     {\"name\":\"元旦\","startday\":\"2018-1-1\"},
       *     {\"name\":\"除夕\"\"startday\":\"2018-2-15\",
       *   ...
       *   ]
       * }
       */
      res = data.result.data.holiday_list;
      res = mapForChineseDate(res, 'startday');
  }

  //将后端整理好的数据存入state里
  store.commit('setData', {
    field,
    data: res
  });
}